import time

from selenium import webdriver
from selenium.webdriver.chrome.options import Options  # 用于设置谷歌浏览器
from selenium.webdriver.chrome.webdriver import Service  # 用于管理谷歌的驱动
from selenium.webdriver.common.by import By

def create_browser():
    # 创建浏览器对象
    q1 = Options()
    # 禁用沙盒模式（增加系统兼容性）
    q1.add_argument('--no-sandbox')
    # 保持浏览器打开状态（），默认代码执行完毕自动关闭
    q1.add_experimental_option(name='detach', value=True)

    # 创建并启动浏览器
    a1 = webdriver.Chrome(service=Service('chromedriver.exe'), options=q1)
    return a1


a1 = create_browser()
# 打开网页
a1.get('https://www.baidu.com/')

# 定位一个元素，找到返回结果，找不到报错，通过id定位元素比较准确
# a2 = a1.find_element(By.ID, 'kw')
# 定位多个元素，找到返回列表
# a2 = a1.find_elements(By.NAME, 'wd')
# 通过浏览器查找元素 document.getElementById('kw')， 在浏览器内console输入
# 元素输入
# a2.send_keys('吕聪')
# a1.find_element(By.ID, 'kw').send_keys('哈哈哈')

# 用Name定位元素
# a1.find_element(By.NAME, 'wd').send_keys('123')

# 用class_name定位元素,class值不能有空格，会报错
# a1.find_element(By.CLASS_NAME, 's_ipt').send_keys('沃茨')
# a1.find_element(By.CLASS_NAME, 'bg s_btn').click()

# class值重复很多，要进行切片操作
# 有的网站的class值是随机的
# for element in a1.find_elements(By.CLASS_NAME, 'channel-icons__item'):
#     element.click()

# 元素定位Link-text，通过链接文本精准定位
# a1.find_element(By.LINK_TEXT, '番剧').click()

# 元素定位partial_link_text,模糊链接文本定位
# a1.find_element(By.PARTIAL_LINK_TEXT, '音').click()

# 元素定位，CSS_SELECTOR，多功能方式的定位
'''
1、#id，通过id值定位
2、.class，通过class值定位
3、不加修饰符，标签头定位
4、通过任意类型定位'[类型=‘精准值’]'
5、通过任意类型定位'[类型*=‘模糊值’]'
6、通过任意类型定位'[类型^=‘开头值’]'
7、通过任意类型定位'[类型$=‘结尾值’]'
8、在google控制台直接复制selector，这是唯一的定位值，这是常用的方法
'''
# a1.find_element(By.CSS_SELECTOR, '[autocomplete="off"]').send_keys('1213213')
# a1.find_element(By.CSS_SELECTOR, '#kw').send_keys('1213213')

''' xpath定位，常用的方法 
复制浏览器的full_xpath，基本准确，不会碰到随机的情况
'''
# a1.find_element(By.XPATH, '//*[@id="kw"]').send_keys('吕聪')
a1.find_element(By.XPATH, '/html/body/div/div[2]/div[2]/a[1]').click()

# 元素清空
# time.sleep(2)
# a2.clear()

# 元素点击
# a2 = a1.find_element(By.ID, 'su')
# a2.click()





